package compra.steps;

import java.util.List;

import compra.fake.DataBase;
import compra.fake.Solicitacao;
import compra.main.Usuario;

import controlador.npws.Atributos;
import controlador.npws.DataHolder;
import controlador.npws.Passo;
import controlador.npws.PassoNpdl;

public class RuleReaproveita extends Passo {

	private int regraFalsa = 0;

	private int regraVerdadeira = 1;

	private int statusDaRegra = regraVerdadeira;

	public RuleReaproveita(PassoNpdl passoNpdl) {
		super(passoNpdl);
	}

	public void avaliaPasso(Object obj) {
		DataHolder holder = (DataHolder) obj;

		Usuario usuario = (Usuario) holder.getDado(Atributos.usuario);
		
		List<Solicitacao> solicitacoes = DataBase.getDataBase()
				.getSolicitacoes();
		int i = usuario.querReaproveitarUmaSolicitacao(solicitacoes);

		if (i == -1) {
			Solicitacao solicitacao = usuario.qualEhASolicitacao();
			holder.setDado(Atributos.solicitacao, solicitacao);
			this.statusDaRegra = this.regraFalsa;
		} else {
			holder.setDado(Atributos.indiceSolicitacaoReaproveitada, i);
			this.statusDaRegra = this.regraVerdadeira;
		}
	}

	public void executaPasso() {
		(super.passo).executeRule(super.passoId, super.instanciaId,
				statusDaRegra);
	}
}
